package cn.edu.xjtu.work.addToArrayForm;

import java.util.ArrayList;
import java.util.List;

/**
 * 989. 数组形式的整数加法
 * 
 * 对于非负整数 X 而言，X 的数组形式是每位数字按从左到右的顺序形成的数组。例如，如果 X = 1231，那么其数组形式为 [1,2,3,1]。
 * 
 * 给定非负整数 X 的数组形式 A，返回整数 X+K 的数组形式。
 * 
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/add-to-array-form-of-integer
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class Solution {
    public static void main(String[] args) {
        Solution solu = new Solution();
        int[] num = { 1, 2, 0, 0 };
        System.out.println(solu.addToArrayForm(num, 34));
    }

    public List<Integer> addToArrayForm(int[] num, int k) {
        List<Integer> ret = new ArrayList<>();
        int count = 0;
        int carry = 0;
        int i = num.length - 1;

        while (k != 0 || i >= 0) {
            count = (i >= 0 ? num[i] : 0) + k % 10 + carry;
            carry = count / 10;
            ret.add(0, count % 10);
            k /= 10;
            i--;
        }
        if (carry == 1) {
            ret.add(0, 1);
        }
        return ret;
    }
}
